setClass("VScore",
		representation(
				.description="character",
				"VIRTUAL"
		),
		prototype=prototype(
				.description="Virtual Score class"
				
		)
) 
#generic functions
setGeneric("ScoreSet",function(.Object,inputSet,...){standardGeneric("ScoreSet")})

#global functions
Ycheck <- function(inputSet){
	if(is.null(inputSet$Y)){
		stop("input Set does not contain Y element ")
	}
	if(! is.numeric(inputSet$Y)){
		stop("input Set Y element is not numeric")
	}
	return(TRUE)
}

#methods
setMethod("ScoreSet",
		signature="VScore",
		definition=function(.Object,inputSet,...){
			if(is.null(inputSet$X)){
				stop("input Set does not contain X element ")
			}
			if(! is.matrix(inputSet$X)){
				stop("input Set X element is not matrix ")
			}
			if( {sum( is.na(inputSet$X) )>0} || {sum( is.infinite(inputSet$X) )>0}  ){
				stop("Set to score Contains Na or NaN or Inf: ",
						get_description(.Object) )
			}
			return(0.0)
		}
)
setMethod("get_description",
		signature="VScore",
		definition=function(.Object){
			.Object@.description
		})
